package com.example.ass7.collision;

import com.example.ass7.geometryprimitives.Point;
import com.example.ass7.geometryprimitives.Rectangle;
import com.example.ass7.geometryprimitives.Velocity;
import com.example.ass7.sprite.Ball;

import biuoop.DrawSurface;

/**
 * @author Meirav Ben Izhak
 */
public interface Collidable {
    /**
     * @return Rectangle
     */
    Rectangle getCollisionRectangle();

    /**
     * @param hitter
     *            hitter
     * @param collisionPoint
     *            collisionPoint
     * @param currentVelocity
     *            currentVelocity
     * @return Velocity
     */
    Velocity hit(Ball hitter, Point collisionPoint, Velocity currentVelocity);

    /**
     * @param surface
     *            surface
     */
    void drawOn(DrawSurface surface);

    /**
     * @param hl
     *            hl
     */
    void addHitListener(HitListener hl);

    /**
     * @param hl
     *            hl
     */
    void removeHitListener(HitListener hl);
}